package com.onLineCar.vehicle.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.onLineCar.common.core.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 订单表
 * </p>
 *
 * @author Xinke_Li
 * @since 2023-12-11
 */
@Data
@Accessors(chain = true)
@TableName(value = "tbl_order")
public class TblOrder {
    private static final long serialVersionUID = 1L;
    /**
     * 订单号
     */
    @TableId
    @Excel(name = "订单号")
    private String orderNumber;

    /**
     * 乘客id
     */
    @Excel(name = "乘客id")
    @TableField(value = "passenger_info_id")
    private Long passengerInfoId;

    /**
     * 乘客电话
     */
    @Excel(name = "乘客电话")
    private String passengerPhone;

    /**
     * 司机id
     */
    @Excel(name = "司机id")
    private Integer driverId;

    /**
     * 司机电话
     */
    @Excel(name = "司机电话")
    private String driverPhone;

    /**
     * 车辆ID
     */
    @Excel(name = "车辆ID")
    private Integer carId;

    /**
     * 车牌号
     */
    @Excel(name = "车牌号")
    private String plateNumber;

    /**
     * 车辆级别
     * 1-豪华级
     * 2-紧凑级
     * 3-中等急
     * 4-低档级
     */
    @Excel(name = "车辆级别")
    private Integer vehicleLevel;

    /**
     * 乘客下单起点经度
     */
    @Excel(name = "乘客下单起点经度")
    private String startLongitude;

    /**
     * 乘客下单起点纬度
     */
    @Excel(name = "乘客下单起点纬度")
    private String startLatitude;

    /**
     * 起点名称
     */
    @Excel(name = "起点名称")
    private String startAddress;

    /**
     * 终点地址名称
     */
    @Excel(name = "终点地址名称")
    private String endAddress;

    /**
     * 乘客下单时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @Excel(name = "乘客下单时间")
    private Date startTime;


    /**
     * 乘客下单终点经度
     */
    @Excel(name = "乘客下单终点经度")
    private String endLongitude;

    /**
     * 乘客下单终点纬度
     */
    @Excel(name = "乘客下单终点纬度")
    private String endLatitude;

    /**
     * 司机抢单时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @Excel(name = "司机抢单时间")
    private Date driverGrabTime;

    /**
     * 接到乘客时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @Excel(name = "接到乘客时间")
    private Date receivePassengerTime;

    /**
     * 乘客下车时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @Excel(name = "乘客下车时间")
    private Date passengerGetoffTime;

    /**
     * 乘客下车经度
     */
    @Excel(name = "乘客下车经度")
    private String passengerGetoffLongitude;

    /**
     * 乘客下车纬度
     */
    @Excel(name = "乘客下车纬度")
    private String passengerGetoffLatitude;

    /**
     * 叫车订单类型1：实时订单 2：预约订单
     */
    @TableField(value = "service_type")
    @Excel(name = "叫车订单类型1")
    private Integer serviceType;

    /**
     * 订单状态
     * 订单状态 0：订单开始 1：司机接单  2：司机到达乘客起点
     * 3：乘客上车，司机开始行程
     *4：到达目的地，行程结束，未支付 5：发起收款 6: 支付完成
     * 7.乘客取消订单 10:去接乘客 11:待派订单
     */
    @Excel(name = "订单状态")
    private Integer status;

    /**
     * 乘客是否评价 0：未评价 1：已评价
     */
    @Excel(name = "乘客是否评价")
    private Integer isEvaluate;

    /**
     * 1:余额 2.微信  3.支付宝
     */
    @Excel(name = "支付方式")
    private Integer payType;

    /**
     * 是否已支付 0：未支付 1：已支付
     */
    @Excel(name = "是否已支付")
    private Integer isPaid;

    /**
     * 是否取消0：未取消  1：已取消
     */
    @Excel(name = "是否取消0")
    private Integer isCancel;

    /**
     * 调帐状态0：未调帐  1:调账中  2.调账完毕
     */
    @Excel(name = "调帐状态0")
    private Integer isAdjust;

    /**
     * 是否疑义订单 0：否 1：是
     */
    @Excel(name = "是否疑义订单")
    private Integer isDissent;

    /**
     * 创建时间
     */
    @Excel(name = "创建时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @Excel(name = "更新时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date updateTime;

    /**
     * 预约用车时间
     */
    @Excel(name = "预约用车时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date timeInCar;

    /**
     * 订单金额
     */
    @Excel(name = "订单金额")
    private BigDecimal orderMoney;

    /**
     * 过路费用
     */
    @Excel(name = "过路费用")
    private BigDecimal valuationTollPrice;

    /**
     * 总金额
     */
    @Excel(name = "总金额")
    private BigDecimal valuationSumPrice;

    /**
     * 是否删除 1-未删除 2-已删除
     */
    @Excel(name = "是否删除")
    private Integer tombstone;

    /**
     * 是否执行中 0执行中 1已结束
     */
    @Excel(name = "是否执行中")
    private Integer deleteOrNo;

    /**
     * 城市编码
     */
    @Excel(name = "城市编码")
    private Long cityCode;

    /**
     * 总路程
     */
    @Excel(name = "总路程")
    private Integer sumKm;

    /**
     * 版本号
     */
    @Excel(name = "版本号")
    private Integer version;

}
